package Datastruct.Linked;

public class DLLinkedList {

    GoodsNode node=new GoodsNode(0,"",0.0);

    //往链表中添加结点
    public  void  add(GoodsNode goodsNode){
        GoodsNode temp=node;

        while (true){
            if(temp.next==null){
                break;
            }

            temp=temp.next;
        }
        temp.next=goodsNode;
    }

    //插入结点按照id编号进行插入
    public  void addByorder(GoodsNode goodsNode){
        GoodsNode temp=node;
        boolean flg=false;
        while (true){
            if(temp.next==null){
                break;
            }
            if(temp.next.id> goodsNode.id) {
                break;
            }else if(temp.next.id== goodsNode.id){
                flg=true;
                break;
            }
            temp=temp.next;
        }
        if(flg){
            System.out.println("不能重复添加商品，商品已经存在");
        }else {
            goodsNode.next=temp.next;
            temp.next=goodsNode;
        }

    }

    /**
     * x修改结点
     * 1.先找到链表当中目标结点
     * 2.根据新的数据修改
     * 3.根据商品编号进行查找
     */

    public  void updateNode(GoodsNode goodsNode){
        //判断链表是否为空
        if(node.next==null){
            System.out.println("链表为空.......");
            return;
        }

        GoodsNode temp=node.next;
        boolean flg=false;
        while (true){
            if(temp==null){
                break;
            }
            if(temp.id== goodsNode.id){
                flg=true;
                break;
            }
            temp=temp.next;
        }
        if(flg){
            temp.name=goodsNode.name;
            temp.price= goodsNode.price;
        }else {
            System.out.println("没有找到结点");
        }

    }

    /**
     * 结点删除
     * 根据结点的编号删除
     */
    public  void delNode(int id){
        GoodsNode temp=node;
        boolean flg=false;
        while (true){
            if(temp.next==null){
                break;
            }
            if(temp.next.id==id){
                flg=true;
                break;
            }
            temp=temp.next;
        }

        if(flg){
            temp.next=temp.next.next;

        }
        else {
            System.out.println("要删除的信息不存在");
        }

    }

    //查看链表当中的每个元素
    public  void showNode(){
        if (node.next==null){
            System.out.println("空链表");
        }
        GoodsNode temp=node.next;
        while (true){
            if(temp.next==null){
                System.out.println(temp);
                break;
            }
            System.out.println(temp);
            temp=temp.next;
        }
    }
    //查看链表当中结点的个数
    public  int getlength(){
        if(node.next==null){
            System.out.println("链表为空。。。。");
            return  0;
        }

        GoodsNode temp=node.next;
        int length=0;
        while(temp!=null){
            length++;
            temp=temp.next;
        }

        return  length;
    }



}
